'''
Created on 24/10/2011

@author: Daniel
'''

from Aluno import *
from Funcionario import *
from Controle import *
from VariaveisGlobais import *
from IO import *
import tkMessageBox

class Programa:
    def __init__(self):
        pass

    def cadastrar_aluno(self, aluno):
                                    
        #Valida as informacoes do aluno a cadastrar, ver funcao de validacao na classe aluno e endereco
        if aluno.valido() and controle.verificar_matricula_existente(aluno.get_matricula()):
            banco.salvar_aluno_no_banco((aluno.get_nome(), aluno.get_serie(), aluno.get_periodo(), aluno.get_turno(), aluno.get_matricula(), aluno.get_email(),
                                              aluno.get_email_pais(), aluno.get_endereco().get_nome_da_rua(), aluno.get_endereco().get_numero(), aluno.get_endereco().get_cep(),
                                              aluno.get_endereco().get_complemento(), aluno.get_endereco().get_bairro(), aluno.get_endereco().get_cidade(), aluno.get_endereco().get_estado(),
                                              aluno.get_numero_max_emprestimo(), aluno.get_autorizacao(), aluno.get_deletado(), aluno.get_livros_de_posse()))
            
    def cadastrar_funcionario(self, funcionario):
        
        if funcionario.valido() and controle.verificar_cpf_existente(funcionario.get_cpf()):
            banco.salvar_funcionario_no_banco((funcionario.get_nome(), funcionario.get_telefone(),funcionario.get_email(), funcionario.get_funcao(), funcionario.get_cpf(),
                                               funcionario.get_endereco().get_nome_da_rua(), funcionario.get_endereco().get_numero(), funcionario.get_endereco().get_cep(),
                                               funcionario.get_endereco().get_complemento(), funcionario.get_endereco().get_bairro(),funcionario.get_endereco().get_cidade(),
                                               funcionario.get_endereco().get_estado(), funcionario.get_numero_max_emprestimo(), funcionario.get_autorizacao(),funcionario.get_deletado(),
                                               funcionario.get_livros_de_posse()))
    
    def cadastrar_livro_didatico(self, livro_didatico):
        
        #Valida as informacoes do livro didatico a cadastrar, ver funcoes de validacao na classe publicacao
        if livro_didatico.valido() and controle.verificar_codigo_existente(livro_didatico.get_codigo(), livro_didatico.get_tipo()):
            banco.salvar_livro_didatico_no_banco((livro_didatico.get_titulo(), livro_didatico.get_sub_titulo(), livro_didatico.get_emprestado(), livro_didatico.get_deletado(), livro_didatico.get_data_cadastro(),
                                                  livro_didatico.get_conservacao(), livro_didatico.get_editora(), livro_didatico.get_codigo(), livro_didatico.get_tipo(),
                                                  livro_didatico.get_autor(), livro_didatico.get_serie(), livro_didatico.get_numero_da_edicao(), livro_didatico.get_materia(),
                                                  livro_didatico.get_volume()))
    
    def cadastrar_livro_paradidatico(self, livro_paradidatico):
        
        #Valida as informacoes do livro paradidatico a cadastrar, ver funcoes de validacao na classe publicacao
        if livro_paradidatico.valido() and controle.verificar_codigo_existente(livro_paradidatico.get_codigo(), livro_paradidatico.get_tipo()):
            banco.salvar_livro_paradidatico_no_banco((livro_paradidatico.get_titulo(), livro_paradidatico.get_sub_titulo(), livro_paradidatico.get_emprestado(), livro_paradidatico.get_deletado(), livro_paradidatico.get_data_cadastro(),
                                                      livro_paradidatico.get_conservacao(), livro_paradidatico.get_editora(), livro_paradidatico.get_codigo(), livro_paradidatico.get_tipo(),
                                                      livro_paradidatico.get_autor()))
        
    def cadastrar_revista(self, revista):
        
        #Valida as informacoes da revista a cadastrar, ver funcoes de validacao na classe publicacao
        if revista.valido() and controle.verificar_codigo_existente(revista.get_codigo(), revista.get_tipo()):
            banco.salvar_revista((revista.get_titulo(), revista.get_emprestado(), revista.get_deletado(), revista.get_data_cadastro(), revista.get_conservacao(),revista.get_editora(),
                                  revista.get_codigo(), revista.get_tipo(), revista.get_data_da_revista(), revista.get_numero_da_edicao()))
            
    def cadastrar_artigo(self, artigo):
        
        #Valida as informacoes do artigo a cadastrar, ver funcoes de validacao na classe publicacao
        if artigo.valido() and controle.verificar_codigo_existente(artigo.get_codigo(), artigo.get_tipo()):
            banco.salvar_artigo((artigo.get_titulo(), artigo.get_emprestado(), artigo.get_deletado(), artigo.get_data_cadastro(), artigo.get_conservacao(),
                                 artigo.get_codigo(), artigo.get_tipo(), artigo.get_data_do_artigo()))
       
    
    def consultar_aluno(self, coluna, termo_para_consulta):
        if not termo_para_consulta:
            self.resultado = banco.consultar_no_banco("aluno", "deletado = 0")
        else:
            self.resultado = banco.consultar_no_banco("aluno", "%s REGEXP '%s' AND deletado = 0" % (coluna, termo_para_consulta))
            
        return self.resultado
    
    def consultar_funcionario(self, coluna, termo_para_consulta):
        if not termo_para_consulta:
            self.resultado = banco.consultar_no_banco("funcionario", "deletado = 0")
        else:
            self.resultado = banco.consultar_no_banco("funcionario", "%s REGEXP '%s' AND deletado = 0" % (coluna, termo_para_consulta))
    
        return self.resultado
    
    def consultar_publicacao(self, tabela, coluna, termo_para_consulta):
        if not termo_para_consulta:
            self.resultado = banco.consultar_no_banco(tabela, "emprestado = 0")            
        else:
            self.resultado = banco.consultar_no_banco(tabela, "'%s' REGEXP '%s' AND emprestado = 0 AND deletado = 0" % (coluna, termo_para_consulta))
        
        
        return self.resultado
        
    def remover_aluno(self, matricula):
        banco.alterar_no_banco("aluno", "deletado = 1", "matricula = '%s'" % (matricula))            
        tkMessageBox.showinfo("Mensagem do sistema", "Aluno Excluido com sucesso!")
        
    def remover_funcionario(self, cpf):
        banco.alterar_no_banco("funcionario", "deletado = 1", "cpf = '%s'" % (cpf))
        tkMessageBox.showinfo("Mensagem do sistema", "Funcionario Excluido com sucesso!")
            

programa = Programa()
        